00001
00002
00003 #ifndef __EAXMANH
00004 #define __EAXMANH
00005
00006 #define COM_NO_WINDOWS_H
00007 #include <objbase.h>
00008 #include "eax.h"
00009
00010 #ifdef __cplusplus
00011 extern "C" {
00012 #endif // __cplusplus
00013
00014 #define CLSID_EAXMANAGER CLSID_EAX20_Manager
00015 #define IID_IEaxManager IID_EAX20_Manager
00016 #define EM_MAX_NAME 32
00017
00018 #define EMFLAG_IDDEFAULT (-1)
00019 #define EMFLAG_IDNONE (-2)
00020 #define EMFLAG_LOCKPOSITION 1
00021 #define EMFLAG_LOADFROMMEMORY 2
00022 #define EMFLAG_NODIFFRACTION 4
00023
00024 typedef struct _EMPOINT {
00025 float fX;
00026 float fY;
00027 float fZ;
00028 } EMPOINT;
00029 typedef EMPOINT FAR *LPEMPOINT;
00030
00031 typedef struct _LISTENERATTRIBUTES {
00032 float fDistanceFactor;
00033 float fRolloffFactor;
00034 float fDopplerFactor;
00035 } LISTENERATTRIBUTES;
00036 typedef LISTENERATTRIBUTES FAR *LPLISTENERATTRIBUTES;
00037
00038 typedef struct _SOURCEATTRIBUTES {
00039 EAXBUFFERPROPERTIES eaxAttributes;
00040 unsigned long ulInsideConeAngle;
00041 unsigned long ulOutsideConeAngle;
00042 long lConeOutsideVolume;
00043 float fConeXdir;
00044 float fConeYdir;
00045 float fConeZdir;
00046 float fMinDistance;
00047 float fMaxDistance;
00048 long lDupCount;
00049 long lPriority;
00050 } SOURCEATTRIBUTES;
00051 typedef SOURCEATTRIBUTES FAR *LPSOURCEATTRIBUTES;
00052
00053 typedef struct _MATERIALATTRIBUTES {
00054 long lLevel;
00055 float fLFRatio;
00056 float fRoomRatio;
00057 DWORD dwFlags;
00058 } MATERIALATTRIBUTES;
00059 typedef MATERIALATTRIBUTES FAR *LPMATERIALATTRIBUTES;
00060
00061 #define EMMATERIAL_OBSTRUCTS 1
00062 #define EMMATERIAL_OCCLUDES 3
00063
00064 typedef struct _DIFFRACTIONBOX {
00065 long lSubspaceID;
00066 EMPOINT empMin;
00067 EMPOINT empMax;
00068 } DIFFRACTIONBOX;
00069 typedef DIFFRACTIONBOX FAR *LPDIFFRACTIONBOX;
00070
00071
00072 DEFINE_GUID(CLSID_EAXMANAGER, 0x60b721a1, 0xf7c8, 0x11d2, 0xa0, 0x2e, 0x0, 0x50, 0x4, 0x6, 0x18, 0xb8);
00073
00074 #ifdef __cplusplus
00075 struct IEaxManager;
00076 #endif // __cplusplus
00077
00078 typedef struct IEaxManager *LPEAXMANAGER;
00079
00080
00081 DEFINE_GUID(IID_IEaxManager, 0x60b721a2, 0xf7c8, 0x11d2, 0xa0, 0x2e, 0x0, 0x50, 0x4, 0x6, 0x18, 0xb8);
00082
00083 #undef INTERFACE
00084 #define INTERFACE IEaxManager
00085
00086 extern HRESULT __stdcall EaxManagerCreate(LPEAXMANAGER*);
00087 typedef HRESULT (__stdcall *LPEAXMANAGERCREATE)(LPEAXMANAGER*);
00088
00089 DECLARE_INTERFACE_(IEaxManager, IUnknown)
00090 {
00091
00092 STDMETHOD(QueryInterface) (THIS_ REFIID, LPVOID *) PURE;
00093 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
00094 STDMETHOD_(ULONG,Release) (THIS) PURE;
00095
00096 STDMETHOD(GetDataSetSize) (THIS_ unsigned long*, DWORD) PURE;
00097 STDMETHOD(LoadDataSet) (THIS_ char*, DWORD) PURE;
00098 STDMETHOD(FreeDataSet) (THIS_ DWORD) PURE;
00099 STDMETHOD(GetListenerAttributes) (THIS_ LPLISTENERATTRIBUTES) PURE;
00100 STDMETHOD(GetSourceID) (THIS_ char*, long*) PURE;
00101 STDMETHOD(GetSourceAttributes) (THIS_ long, LPSOURCEATTRIBUTES) PURE;
00102 STDMETHOD(GetSourceNumInstances) (THIS_ long, long*) PURE;
00103 STDMETHOD(GetSourceInstancePos) (THIS_ long, long, LPEMPOINT) PURE;
00104 STDMETHOD(GetEnvironmentID) (THIS_ char*, long*) PURE;
00105 STDMETHOD(GetEnvironmentAttributes) (THIS_ long, LPEAXLISTENERPROPERTIES) PURE;
00106 STDMETHOD(GetMaterialID) (THIS_ char*, long*) PURE;
00107 STDMETHOD(GetMaterialAttributes) (THIS_ long, LPMATERIALATTRIBUTES) PURE;
00108 STDMETHOD(GetGeometrySetID) (THIS_ char*, long*) PURE;
00109 STDMETHOD(GetListenerDynamicAttributes) (THIS_ long, LPEMPOINT, long*, DWORD) PURE;
00110 STDMETHOD(GetSourceDynamicAttributes) (THIS_ long, LPEMPOINT, long*, float*, long*, float*, float*, LPEMPOINT, DWORD) PURE;
00111 };
00112
00113 #if !defined(__cplusplus) || defined(CINTERFACE)
00114 #define IEaxManager_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
00115 #define IEaxManager_AddRef(p) (p)->lpVtbl->AddRef(p)
00116 #define IEaxManager_Release(p) (p)->lpVtbl->Release(p)
00117 #define IEaxManager_GetDataSetSize(p,a,b) (p)->lpVtbl->GetDataSetSize(p,a,b)
00118 #define IEaxManager_LoadDataSet(p,a,b) (p)->lpVtbl->LoadDataSet(p,a,b)
00119 #define IEaxManager_FreeDataSet(p,a) (p)->lpVtbl->FreeDataSet(p,a)
00120 #define IEaxManager_GetListenerAttributes(p,a) (p)->lpVtbl->GetListenerAttributes(p,a)
00121 #define IEaxManager_GetSourceID(p,a,b) (p)->lpVtbl->GetSourceID(p,a,b)
00122 #define IEaxManager_GetSourceAttributes(p,a,b) (p)->lpVtbl->GetSourceAttributes(p,a,b)
00123 #define IEaxManager_GetSourceNumInstances(p,a,b) (p)->lpVtbl->GetSourceNumInstances(p,a,b)
00124 #define IEaxManager_GetSourceInstancePos(p,a,b,c) (p)->lpVtbl->GetSourceInstancePos(p,a,b,c)
00125 #define IEaxManager_GetEnvironmentID(p,a,b) (p)->lpVtbl->GetEnvironmentID(p,a,b)
00126 #define IEaxManager_GetEnvironmentAttributes(p,a,b) (p)->lpVtbl->GetEnvironmentAttributes(p,a,b)
00127 #define IEaxManager_GetMaterialID(p,a,b) (p)->lpVtbl->GetMaterialID(p,a,b)
00128 #define IEaxManager_GetMaterialAttributes(p,a,b) (p)->lpVtbl->GetMaterialAttributes(p,a,b)
00129 #define IEaxManager_GetGeometrySetID(p,a,b) (p)->lpVtbl->GetGeometrySetID(p,a,b)
00130 #define IEaxManager_GetListenerDynamicAttributes(p,a,b,c,d) (p)->lpVtbl->GetListenerDynamicAttributes(p,a,b,c,d)
00131 #define IEaxManager_GetSourceDynamicAttributes(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->GetSourceDynamicAttributes(p,a,b,c,d,e,f,g,h,i)
00132 #else
00133 #define IEaxManager_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
00134 #define IEaxManager_AddRef(p) (p)->AddRef()
00135 #define IEaxManager_Release(p) (p)->Release()
00136 #define IEaxManager_GetDataSetSize(p,a,b) (p)->GetDataSetSize(a,b)
00137 #define IEaxManager_LoadDataSet(p,a,b) (p)->LoadDataSet(a,b)
00138 #define IEaxManager_FreeDataSet(p,a) (p)->FreeDataSet(a)
00139 #define IEaxManager_GetListenerAttributes(p,a) (p)->GetListenerAttributes(a)
00140 #define IEaxManager_GetSourceID(p,a,b) (p)->GetSourceID(a,b)
00141 #define IEaxManager_GetSourceAttributes(p,a,b) (p)->GetSourceAttributes(a,b)
00142 #define IEaxManager_GetSourceNumInstances(p,a,b) (p)->GetSourceNumInstances(a,b)
00143 #define IEaxManager_GetSourceInstancePos(p,a,b,c) (p)->GetSourceInstancePos(a,b,c)
00144 #define IEaxManager_GetEnvironmentID(p,a,b) (p)->GetEnvironmentID(a,b)
00145 #define IEaxManager_GetEnvironmentAttributes(p,a,b) (p)->GetEnvironmentAttributes(a,b)
00146 #define IEaxManager_GetMaterialID(p,a,b) (p)->GetMaterialID(a,b)
00147 #define IEaxManager_GetMaterialAttributes(p,a,b) (p)->GetMaterialAttributes(a,b)
00148 #define IEaxManager_GetGeometrySetID(p,a,b) (p)->GetGeometrySetID(a,b)
00149 #define IEaxManager_GetListenerDynamicAttributes(p,a,b,c,d) (p)->GetListenerDynamicAttributes(a,b,c,d)
00150 #define IEaxManager_GetSourceDynamicAttributes(p,a,b,c,d,e,f,g,h,i) (p)->GetSourceDynamicAttributes(a,b,c,d,e,f,g,h,i)
00151 #endif
00152
00153 #define EM_OK 0
00154 #define EM_INVALIDID MAKE_HRESULT(1, FACILITY_ITF, 1)
00155 #define EM_IDNOTFOUND MAKE_HRESULT(1, FACILITY_ITF, 2)
00156 #define EM_FILENOTFOUND MAKE_HRESULT(1, FACILITY_ITF, 3)
00157 #define EM_FILEINVALID MAKE_HRESULT(1, FACILITY_ITF, 4)
00158 #define EM_VERSIONINVALID MAKE_HRESULT(1, FACILITY_ITF, 5)
00159 #define EM_INSTANCENOTFOUND MAKE_HRESULT(1, FACILITY_ITF, 6)
00160
00161 #ifdef __cplusplus
00162 };
00163 #endif // __cplusplus
00164
00165 #endif